package com.tgy.reflection;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/***
 * @ClassName: TestAnnotation12
 * @Description: 自定义注解
 * @Auther: 送一一块二向箔
 * @Date: 10:08 2021/12/1
 * @version : V1.0
 */
public class TestAnnotation12 {

    //注解可以显示赋值，如果没有默认值，我们就必须给注解赋值
    @MyAnnotation2(age = 1)
    public void test(){

    }

    @MyAnnotation3("一个参数不用写名字")
    public void test2() {

    }
}


@Target(value = {ElementType.TYPE,ElementType.METHOD})
@Retention(value = RetentionPolicy.RUNTIME)
@interface MyAnnotation2{
    // 注解的参数：参数类型+参数名（）;
    String name() default "";//有默认参数
    int age() ;//无默认参数必须要传
    int id() default -1;//如果默认值为-1，代表不存在
    String[] school() default {"清华","北大","山科大"};
}

@Target(value = {ElementType.TYPE,ElementType.METHOD})
@Retention(value = RetentionPolicy.RUNTIME)
@interface MyAnnotation3{
    String value();//有默认参数
}
